package com.yeung.swordoffer;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/*
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的，但不知道有几个数字是重复的。
也不知道每个数字重复几次。请找出数组中任意一个重复的数字。

 例如，如果输入长度为7的数组{2,3,1,0,2,5,3}，那么对应的输出是第一个重复的数字2。
 */
public class 数组中的重复数字 {
    public static void main(String[] args) {

    }

    public boolean duplicate(int numbers[], int length, int[] duplication) {
        if (numbers == null || numbers.length == 0) {
            duplication[0] = -1;
            return false;
        }
        ArrayList<Integer> list = new ArrayList<>();
        Map<Integer, Integer> map = new HashMap<>();
        for (int number : numbers) {
            if (map.containsKey(number)) {
                map.put(number, map.get(number) + 1);
            } else {
                list.add(number);
                map.put(number, 1);
            }
        }
        boolean flag = false;
        for (Integer key : list) {
            Integer val = map.get(key);
            if (val > 1) {
                duplication[0] = key;
                flag = true;
                break;
            }
        }
        return flag;
    }
}
